Wczytanie bibliotek

library(dplyr, warn.conflicts = FALSE)
library(tidyr, warn.conflicts = FALSE)
library(ggplot2, warn.conflicts = FALSE)
library(readxl, warn.conflicts = FALSE)
library(plotly, warn.conflicts = FALSE)

Zapewnienie powtarzalności

set.seed(997)

Wczytanie danych

bitcoin_diff <- read.csv("data/Bitcoin/BCHAIN-DIFF.csv", header=TRUE)

bitcoin_hrate <- read.csv("data/Bitcoin/BCHAIN-HRATE.csv", header=TRUE)

bitcoin_mkpru <- read.csv("data/Bitcoin/BCHAIN-MKPRU.csv", header=TRUE)

bitcoin_trvou <- read.csv("data/Bitcoin/BCHAIN-TRVOU.csv", header=TRUE)

currency_exchange_rates <- read.csv("data/CurrencyExchangeRates.csv", header=TRUE)
#currency_exchange_rates[,1] <- as.POSIXct(strptime(currency_exchange_rates[,1], "%Y-%m-%d"))

gold_prices <- read.csv("data/Gold_prices.csv", header=TRUE, col.names = c("date", "USD_AM", "USD_PM", "GBP_AM",  "GBP_PM",  "EURO_AM", "EURO_PM"))

s_p_composite <- read.csv("data/S&PComposite.csv", header=TRUE)

world_development_indicators <- read_excel("data/World_Development_Indicators.xlsx", sheet="Data", na=c(".."))

Czyszczenie danych

bitcoin_diff <- bitcoin_diff %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_hrate <- bitcoin_hrate %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_mkpru <- bitcoin_mkpru %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

bitcoin_trvou <- bitcoin_trvou %>% 
  mutate(Date=as.POSIXct(strptime(Date, "%Y-%m-%d"))) %>%
  rename(date=Date, value=Value)

currency_exchange_rates <-currency_exchange_rates %>%
  select(Date, Euro, U.K..Pound.Sterling) %>%
  rename(date=Date, EURO=Euro, GBP=U.K..Pound.Sterling) %>%
  gather(currency, value, EURO:GBP) %>%
  mutate(currency=as.factor(currency), date=as.POSIXct(strptime(date, "%Y-%m-%d")), value=1/value)  %>%
  filter(!is.na(value))

gold_prices <- mutate(gold_prices,USD=f(USD_AM,  USD_PM), GBP=f(GBP_AM, GBP_PM), EURO=f(EURO_AM, EURO_PM)) %>% 
  select(date, USD, GBP, EURO) %>%
  gather(currency, value, USD:EURO) %>%
  mutate(currency=as.factor(currency), date=as.POSIXct(strptime(date, "%Y-%m-%d")))  %>%
  filter(!is.na(value))

s_p_composite <- gather(s_p_composite, indicator, value, S.P.Composite:Cyclically.Adjusted.PE.Ratio) %>%
  mutate(indicator=as.factor(indicator), Year=cut(as.POSIXct(strptime(Year, "%Y-%m-%d")), "month")) %>%
  rename(date=Year) %>%
  filter(!is.na(value))

world_development_indicators <- gather(world_development_indicators,date, value, "1970 [YR1970]":"2020 [YR2020]") %>% 
  mutate(year=as.POSIXct(strptime(sprintf('%s-01-01',substr(date, 1, 4)), "%Y-%m-%d"))) %>% 
  rename(country_name=`Country Name`, indicator=`Series Name`) %>%
  mutate(country_name=as.factor(country_name), indicator=as.factor(indicator)) %>%
  filter(!is.na(value)) %>%
  select(country_name, indicator, year, value)

Podsumowanie rozmiaru zbioru, podstawowe statystyki i analiza atrybutów

Bitcoin

Trudność znalezienia nowego bloku

Statystki

Date Value
Min. :2009-01-02 00:00:00 Min. :0.000e+00
1st Qu.:2012-03-11 18:00:00 1st Qu.:1.689e+06
Median :2015-05-20 12:00:00 Median :4.881e+10
Mean :2015-05-20 12:24:33 Mean :3.664e+12
3rd Qu.:2018-07-28 06:00:00 3rd Qu.:5.364e+12
Max. :2021-10-05 00:00:00 Max. :2.505e+13

Zbiór zawiera 4660 obserwacji reprezentujących trudność znalezienia nowego bloku podczas kopania kryptowaluty z okresu między 2009-01-02 a 2021-10-05. Na poniższym wykresie widać, że wartości zaczęły gwałtownie rosnąć od 2017 roku z wyraźniejszymi spadkami w roku 2019 i 2021.

Szacowana liczba tera haszy na sekundę wykonywanych przez sieć Bitcoina

Statystyki

Date Value
Min. :2009-01-03 00:00:00 Min. : 0
1st Qu.:2012-03-12 12:00:00 1st Qu.: 12
Median :2015-05-21 00:00:00 Median : 356089
Mean :2015-05-21 00:24:32 Mean : 26458258
3rd Qu.:2018-07-28 12:00:00 3rd Qu.: 38265984
Max. :2021-10-05 00:00:00 Max. :198514006

Zbiór zawiera 4659 obserwacji przedstawiających liczbę tera haszy na sekundę wykonywanych przez sieć Bitcoina w okresie od 2009-01-03 do 2021-10-05. Na poniższym wykresie widać podobny trend jak w przypadku trudności znalezienia nowego bloku. Potwierdza to współczynnik korelacji Pearsona, który wynosi 0.989704.

Średnia wartość w USD

Statystyki

Date Value
Min. :2009-01-02 00:00:00 Min. : 0.0
1st Qu.:2012-03-12 00:00:00 1st Qu.: 7.2
Median :2015-05-21 00:00:00 Median : 431.9
Mean :2015-05-21 00:24:32 Mean : 5141.2
3rd Qu.:2018-07-29 00:00:00 3rd Qu.: 6499.1
Max. :2021-10-06 00:00:00 Max. :63554.4

Zbiór zaweierający wartości Bitcoina w dolarach zawiera 4661 obserwacji. W okresie od 2009-01-02 do 2021-10-06 najwyższa warość Bitocina wyniosła 6.355444^{4} dolarów, a średnia 5141.23 dolarów. Duży spadek, który można zaobserwować w połowie 2021 roku spowodowany został zapowiedziami Chińskiego rządu dotyczącymi regulacji odnośnie kryptowalut oraz tweetami Elona Muska na temat zablokowania możliwości płacenia za samochody marki Tesla w tej kryptowalucie czy sprzedaży przez tę firmę sprzedaży posiadanych Bitcoinów o wartości 1,5 mld dolarów (https://pl.wikipedia.org/wiki/Bitcoin#Rynek). Wykres wygląda podobnie do wykresu trudności znaleziania nowego bloku i szacowanej liczby tera haszy na sekunde co potwierdzają wartości współczynnika korelacji Pearsona, które wynoszą odpowiednio 0.82 i 0.82.

Korelację między trudnością znalezienia nowego bloku, szacowaną liczbą tera haszy na sekundę i wartością Bitcoina w dolarach można pokazać na jednym wykresie. W celu czytelenego pokazania wszystkich zmiennych wartości poszczególnych miar zostały znormalizowane.

Wartość w USD wolumenu obrotu

Statystyki

Date Value
Min. :2009-01-02 00:00:00 Min. : 0
1st Qu.:2012-03-12 00:00:00 1st Qu.: 194787
Median :2015-05-21 00:00:00 Median : 6823690
Mean :2015-05-21 00:24:32 Mean : 146728050
3rd Qu.:2018-07-29 00:00:00 3rd Qu.: 148443298
Max. :2021-10-06 00:00:00 Max. :5352015516

Zbiór zaweierający wartość obrotu Bitcoina wyrażony w dolarach zawiera 4661 obserwacji. Najwyższy obrót o wartości 5.3520155^{9} USD odnotowano dnia 2017-12-22. Korelacja tej miary z wartością Bitcoina w dolarach wynosi 0.53 a z liczbą tera haszy na sekundę 0.39. Obie te korelacje są małe.

Cena złota

EURO

Statystyki

date currency value
Min. :1999-01-04 00:00:00 EURO:5748 Min. : 237.0
1st Qu.:2004-09-09 18:00:00 GBP : 0 1st Qu.: 335.2
Median :2010-05-18 12:00:00 USD : 0 Median : 894.7
Mean :2010-05-18 00:24:54 NA Mean : 797.3
3rd Qu.:2016-01-25 06:00:00 NA 3rd Qu.:1114.7
Max. :2021-09-29 00:00:00 NA Max. :1736.2

W okresie od 1999-01-04 do 2021-09-29 cena złota w Euro wachała się od 237.021 do 1736.15. Średnia wartość w tym okresie wyniosła 797.25.

Funt brytyjski

Statystyki

date currency value
Min. :1968-01-02 00:00:00 EURO: 0 Min. : 14.48
1st Qu.:1981-06-22 06:00:00 GBP :13574 1st Qu.: 177.71
Median :1994-11-21 12:00:00 USD : 0 Median : 234.52
Mean :1994-11-23 03:49:44 NA Mean : 370.78
3rd Qu.:2008-04-27 06:00:00 NA 3rd Qu.: 454.79
Max. :2021-09-29 00:00:00 NA Max. :1566.94

W okresie od 1968-01-02 do 2021-09-29 cena złota w funtach wachała się od 14.482 do 1566.945. Średnia wartość w tym okresie wyniosła 370.78.

Dolar amerykański

Statystyki

date currency value
Min. :1968-01-02 00:00:00 EURO: 0 Min. : 34.76
1st Qu.:1981-06-10 00:00:00 GBP : 0 1st Qu.: 280.27
Median :1994-11-14 00:00:00 USD :13585 Median : 383.38
Mean :1994-11-16 03:40:00 NA Mean : 575.07
3rd Qu.:2008-04-23 00:00:00 NA 3rd Qu.: 841.00
Max. :2021-09-29 00:00:00 NA Max. :2058.15

W okresie od 1968-01-02 do 2021-09-29 cena złota w dolarach wachała się od 34.76 do 2058.15. Średnia wartość w tym okresie wyniosła 575.07. W cenach złota można zaobserować wzrost w 1980 roku, po którym do 2005 roku nie obserwuje się dużych wahań.

Kursy walut

Statystyki

date currency value
Min. :1995-01-03 00:00:00 EURO:4908 Min. :0.8252
1st Qu.:2002-03-25 00:00:00 GBP :5856 1st Qu.:1.2440
Median :2007-06-30 12:00:00 NA Median :1.4416
Mean :2007-06-19 12:07:04 NA Mean :1.4292
3rd Qu.:2012-11-09 00:00:00 NA 3rd Qu.:1.6080
Max. :2018-05-02 00:00:00 NA Max. :2.1020

Najwyższą wartość w euro dolar osiągnął 26-10-2000, wyniosła ona 1.21 euro. Najniższa wartość wyniosła 0.63 i została odnotowana w dniu 15-07-2008. W przypadku funta najwyższa wartość, którą dolar osiągnął w tej walucie wyniosła 0.82 (11-01-2017) a najniższa 0.48 (08-11-2007).

Wyniki S&P Composite

Statystyki

Year measurment value
Min. :1871-01-31 00:00:00 CPI :1810 Min. : 0.160
1st Qu.:1909-07-31 00:00:00 Cyclically.Adjusted.PE.Ratio:1690 1st Qu.: 5.194
Median :1946-11-30 00:00:00 Dividend :1806 Median : 14.100
Mean :1946-11-26 14:09:49 Earnings :1806 Mean : 124.066
3rd Qu.:1984-04-30 00:00:00 Long.Interest.Rate :1810 3rd Qu.: 42.965
Max. :2021-10-31 00:00:00 Real.Dividend :1806 Max. :4493.280
NA Real.Earnings :1806 NA
NA Real.Price :1810 NA
NA S.P.Composite :1810 NA

Wskaźnik cen towarów i usług konsumpcyjnych

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 CPI :1810 Min. : 6.28
1st Qu.:1908-10-07 18:00:00 Cyclically.Adjusted.PE.Ratio: 0 1st Qu.: 10.20
Median :1946-06-15 00:00:00 Dividend : 0 Median : 20.35
Mean :1946-06-15 19:15:12 Earnings : 0 Mean : 62.39
3rd Qu.:1984-02-21 18:00:00 Long.Interest.Rate : 0 3rd Qu.:102.28
Max. :2021-10-31 00:00:00 Real.Dividend : 0 Max. :273.98
NA (Other) : 0 NA

Indeks CPI to średnia ważona towarów i usług kupowanych przez przeciętne gospodarstwo domowe (https://pl.wikipedia.org/wiki/Wska%C5%BAnik_cen_towar%C3%B3w_i_us%C5%82ug_konsumpcyjnych). W latach 1871-01-31 do 2021-10-31 wahał się od 6.2796132 do 273.98325. Na wykresie widać, że po roku 1973 nastąpił gwałtowniejszy wzrost wartości tego indeksu.

Cyclically adjusted price-to-earnings ratio

Statystyki

date indicator value
Min. :1881-01-31 00:00:00 Cyclically.Adjusted.PE.Ratio:1690 Min. : 4.784
1st Qu.:1916-04-07 12:00:00 CPI : 0 1st Qu.:11.898
Median :1951-06-15 00:00:00 Dividend : 0 Median :16.381
Mean :1951-06-15 22:53:13 Earnings : 0 Mean :17.215
3rd Qu.:1986-08-23 06:00:00 Long.Interest.Rate : 0 3rd Qu.:20.913
Max. :2021-10-31 00:00:00 Real.Dividend : 0 Max. :44.198
NA (Other) : 0 NA

Powyższy wskaźnik pomaga w ocenie czy ceny akcji na giełdzie są zawyżone. Najwyższa jego wartość wyniosła 44.1979398. Miało to miejsce w 1999 roku. Był to okres “bański internetowej” kiedy to przeceniane były wartości firm prowadzących działalność w internecie (https://pl.wikipedia.org/wiki/Ba%C5%84ka_internetowa). Inna wysoka wartość widoczna na wykresie to okres początku wielkiego kryzysu (https://pl.wikipedia.org/wiki/Czarny_wtorek https://www.parkiet.com/Felietony/309199946-Co-podpowiada-wskaznik-Shiller-PE.html?preview=&remainingPreview=&grantedBy=preview&).

Dywidendy

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 Dividend :1806 Min. : 0.1800
1st Qu.:1908-08-31 00:00:00 Real.Dividend :1806 1st Qu.: 0.8725
Median :1946-04-15 00:30:00 CPI : 0 Median : 9.0136
Mean :1946-04-15 22:14:47 Cyclically.Adjusted.PE.Ratio: 0 Mean :12.1151
3rd Qu.:1983-11-30 00:00:00 Earnings : 0 3rd Qu.:18.5018
Max. :2021-06-30 00:00:00 Long.Interest.Rate : 0 Max. :63.5107
NA (Other) : 0 NA

Wartość dywident w okresie czasu, który obejmują dane wykazują trend wzrostowy z jedyn wyraźnym spadkiem w latach 2007 - 2009. Wartości faktycznych dywident przez cały okres była większa niż wartość dywident i wykazywała się większymi wahaniami.

Zysk

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 Earnings :1806 Min. : 0.160
1st Qu.:1908-08-31 00:00:00 Real.Earnings :1806 1st Qu.: 1.465
Median :1946-04-15 00:30:00 CPI : 0 Median : 14.448
Mean :1946-04-15 22:14:47 Cyclically.Adjusted.PE.Ratio: 0 Mean : 25.139
3rd Qu.:1983-11-30 00:00:00 Dividend : 0 3rd Qu.: 36.072
Max. :2021-06-30 00:00:00 Long.Interest.Rate : 0 Max. :159.504
NA (Other) : 0 NA

Podobnie jak w przypadku dywident faktyczny zysk wykazuje się większymi wahaniami i większą wartością niż zysk.

Long Interest Rate

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 Long.Interest.Rate :1810 Min. : 0.620
1st Qu.:1908-10-07 18:00:00 CPI : 0 1st Qu.: 3.171
Median :1946-06-15 00:00:00 Cyclically.Adjusted.PE.Ratio: 0 Median : 3.815
Mean :1946-06-15 19:15:12 Dividend : 0 Mean : 4.504
3rd Qu.:1984-02-21 18:00:00 Earnings : 0 3rd Qu.: 5.139
Max. :2021-10-31 00:00:00 Real.Dividend : 0 Max. :15.320
NA (Other) : 0 NA

Faktyczna cena

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 Real.Price :1810 Min. : 73.9
1st Qu.:1908-10-07 18:00:00 CPI : 0 1st Qu.: 186.6
Median :1946-06-15 00:00:00 Cyclically.Adjusted.PE.Ratio: 0 Median : 283.3
Mean :1946-06-15 19:15:12 Dividend : 0 Mean : 622.0
3rd Qu.:1984-02-21 18:00:00 Earnings : 0 3rd Qu.: 707.0
Max. :2021-10-31 00:00:00 Long.Interest.Rate : 0 Max. :4477.2
NA (Other) : 0 NA

S P composite

Statystyki

date indicator value
Min. :1871-01-31 00:00:00 S.P.Composite :1810 Min. : 2.730
1st Qu.:1908-10-07 18:00:00 CPI : 0 1st Qu.: 7.902
Median :1946-06-15 00:00:00 Cyclically.Adjusted.PE.Ratio: 0 Median : 17.370
Mean :1946-06-15 19:15:12 Dividend : 0 Mean : 327.968
3rd Qu.:1984-02-21 18:00:00 Earnings : 0 3rd Qu.: 164.400
Max. :2021-10-31 00:00:00 Long.Interest.Rate : 0 Max. :4493.280
NA (Other) : 0 NA

Wskażniki rozwoju na świecie

Statystyki

country_name indicator year value
Mexico : 7674 Population, total : 10576 Min. :1970-12-31 00:00:00 Min. : -481321056610000
United Kingdom: 7540 Population growth (annual %) : 10573 1st Qu.:1988-12-31 00:00:00 1st Qu.: 6
Korea, Rep. : 7505 Rural population (% of total population): 10548 Median :2000-12-31 00:00:00 Median : 41
Peru : 7505 Urban population (% of total population): 10548 Mean :1999-05-10 10:35:42 Mean : 351647861972
Turkey : 7505 Rural population : 10525 3rd Qu.:2010-12-31 00:00:00 3rd Qu.: 9240
Costa Rica : 7474 Urban population : 10525 Max. :2020-12-31 00:00:00 Max. :10211700000000000
(Other) :1084125 (Other) :1066033 NA NA

Zbiór opisuje 201 państw oraz cały świat oraz 6 kategori wysokości przychdu przy pomocy 213 wskaźników w latach 1970-2020.

Korelacje

Przy szukaniu korelacji… ## Korelacje pomiędzyw wkażnikami rozwoju ### Świat

#indicators <- unique(world_development_indicators$indicator)
#world <- world_development_indicators %>% filter(country_name == "World")
#for (i in indicators) {
#  for (j in indicators) {
#    if(i!=j){
#      x <- world %>% filter(indicator == i)
#      y <- world %>% filter(indicator == j)
#      joined <- inner_join(x, y, by="year")
#      c <- cor(joined$value.x, joined$value.y)
#      txt <- paste(i , " do " , j , "wynosi ", c)
#      if (!is.na(c) & abs(c) > 0.9){
#        print(txt)
#      }
#      
#    }
#  }
#    
#}

USA

Przewidywanie cen złota

Regresor

Wyniki

Analiza atrybutów najlepszego znalezionego modelu